Many electronic system applications require non-volatile memory (NVM) to provide a variety of functions. Example applications for NVM include storing: security settings, serial numbers, RFID (radio frequency identification) data, system configurations, calibration settings, trim settings, parameters, computer instructions (e.g., firmware), as well as others. The reprogramming of an NVM is very useful in the field of electronic tags such as RFID tags. Information that is stored in an NVM of an RFID tag can be remotely sensed for various system purposes such as electronic inventory control, electronic security systems, data logging applications, as well as others.
Reliability of NVM devices is important in field based applications, where failures are prone to occur as a result of built-in defect in materials, misuse, environmental abuse, or some other mechanically, electrically, or electro-mechanically induced failure may occur. There are several methods that can be used to increase the reliability in the NVM including error correction code (ECC) methods and various redundant NVM architectures, which have been evaluated in pursuit of the instant disclosure.
Error correction code (ECC) methodologies use software and/or hardware based error checking algorithms to evaluate data that is stored in the NVM to determine if the data is error free. Example ECC methods include odd/even parity checking, odd/even checksum, cyclic redundancy codes (CRC), as well as others. A problem that has been reviewed in consideration of the present disclosure is that additional memory bits and additional circuits may be necessary in the NVM to allow for ECCs. The number of additional memory bits depends on the configuration of the memory, i.e., word size. The additional circuitry is necessary to decode the information stored in the NVM. ECC topologies can usually only correct for single bit failures. Higher order ECC topologies can be used to correct for multiple bit failures but also need additional area and additional circuit complexity.
An example redundant NVM architecture that has been evaluated in consideration of the present disclosure is to use additional data bits (e.g., 2 bits) as a backup for each single bit of data. Although this is a fully redundant solution, the resulting NVM is very inefficient in the use of area (e.g., 200% greater than the original area for 2 additional data bits) in implementing a solution.